using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("TriggerSpellController")]
	public class TriggerSpellController : SpellController
	{
		public Spell m_triggerSpell => method_3<Spell>("m_triggerSpell");

		public List<CardSoundSpell> m_triggerSoundSpells => method_3<Class271<CardSoundSpell>>("m_triggerSoundSpells")?.method_25();

		public Spell m_actorTriggerSpell => method_3<Spell>("m_actorTriggerSpell");

		public static float BAUBLE_WAIT_TIME_SEC => MonoClass.smethod_6<float>(TritonHs.MainAssemblyPath, "", "TriggerSpellController", "BAUBLE_WAIT_TIME_SEC");

		public int m_cardEffectsBlockingFinish => method_2<int>("m_cardEffectsBlockingFinish");

		public int m_cardEffectsBlockingTaskListFinish => method_2<int>("m_cardEffectsBlockingTaskListFinish");

		public bool m_waitingForBauble => method_2<bool>("m_waitingForBauble");

		public bool m_baubleBlockedFinish => method_2<bool>("m_baubleBlockedFinish");

		public TriggerSpellController(IntPtr address, string className)
			: base(address, className)
		{
		}

		public TriggerSpellController(IntPtr address)
			: this(address, "TriggerSpellController")
		{
		}

		public new bool AddPowerSourceAndTargets(PowerTaskList taskList)
		{
			return method_11<bool>("AddPowerSourceAndTargets", new object[1] { taskList });
		}

		public new bool HasSourceCard(PowerTaskList taskList)
		{
			return method_11<bool>("HasSourceCard", new object[1] { taskList });
		}

		public new void OnProcessTaskList()
		{
			method_8("OnProcessTaskList");
		}

		public new void OnFinished()
		{
			method_8("OnFinished");
		}

		public new bool ShouldReconnectIfStuck()
		{
			return method_11<bool>("ShouldReconnectIfStuck", Array.Empty<object>());
		}

		public void Reset()
		{
			method_8("Reset");
		}

		public bool ActivateInitialSpell()
		{
			return method_11<bool>("ActivateInitialSpell", Array.Empty<object>());
		}

		public void ProcessCurrentTaskList()
		{
			method_8("ProcessCurrentTaskList");
		}

		public Card GetCardWithActorTrigger(PowerTaskList taskList)
		{
			return method_15<Card>("GetCardWithActorTrigger", new Class276.Enum20[1] { Class276.Enum20.Class }, new object[1] { taskList });
		}

		public Card GetCardWithActorTrigger(Entity entity)
		{
			return method_15<Card>("GetCardWithActorTrigger", new Class276.Enum20[1] { Class276.Enum20.Class }, new object[1] { entity });
		}

		public bool CanPlayActorTriggerSpell(Entity entity)
		{
			return method_11<bool>("CanPlayActorTriggerSpell", new object[1] { entity });
		}

		public Spell GetActorTriggerSpell(Entity entity)
		{
			return method_14<Spell>("GetActorTriggerSpell", new object[1] { entity });
		}

		public SpellType GetActorTriggerSpellType(int triggerKeyword, Entity entity)
		{
			return method_11<SpellType>("GetActorTriggerSpellType", new object[2] { triggerKeyword, entity });
		}

		public bool ActivateActorTriggerSpell()
		{
			return method_11<bool>("ActivateActorTriggerSpell", Array.Empty<object>());
		}

		public void OnActorTriggerSpellStateFinished(Spell spell, SpellStateType prevStateType, object userData)
		{
			method_8("OnActorTriggerSpellStateFinished", spell, prevStateType, userData);
		}

		public CardEffect InitEffect(Card card)
		{
			return method_14<CardEffect>("InitEffect", new object[1] { card });
		}

		public bool ActivateCardEffects()
		{
			return method_11<bool>("ActivateCardEffects", Array.Empty<object>());
		}

		public void OnCardSpellFinished(Spell spell, object userData)
		{
			method_8("OnCardSpellFinished", spell, userData);
		}

		public void OnCardSpellStateFinished(Spell spell, SpellStateType prevStateType, object userData)
		{
			method_8("OnCardSpellStateFinished", spell, prevStateType, userData);
		}

		public void CardSpellFinished()
		{
			method_8("CardSpellFinished");
		}

		public void CardSpellNoneStateEntered()
		{
			method_8("CardSpellNoneStateEntered");
		}

		public void InitTriggerSpell(CardEffect effect, Card card)
		{
			method_8("InitTriggerSpell", effect, card);
		}

		public bool ActivateTriggerSpell()
		{
			return method_11<bool>("ActivateTriggerSpell", Array.Empty<object>());
		}

		public bool InitTriggerSounds(CardEffect effect, Card card)
		{
			return method_11<bool>("InitTriggerSounds", new object[2] { effect, card });
		}

		public bool ActivateTriggerSounds()
		{
			return method_11<bool>("ActivateTriggerSounds", Array.Empty<object>());
		}
	}
}
